// BreezeShl.h : Declaration of the CBreezeShl

#ifndef __BREEZESHL_H_
#define __BREEZESHL_H_

#include "resource.h"       // main symbols
#include <shlobj.h>
#include <comdef.h>
#include <fstream>
#include "struct_list.h"

/////////////////////////////////////////////////////////////////////////////
// CBreezeShl
class ATL_NO_VTABLE CBreezeShl : 
	public CComObjectRootEx<CComSingleThreadModel>,
	public CComCoClass<CBreezeShl, &CLSID_BreezeShl>,
	public IDispatchImpl<IBreezeShl, &IID_IBreezeShl, &LIBID_BREEZECOPYLib>,
	public IShellExtInit,
	public IContextMenu
{
public:
	CBreezeShl();

	//IShellExtInit
	STDMETHOD(Initialize)(LPCITEMIDLIST, LPDATAOBJECT, HKEY);
    
	// IContextMenu
    STDMETHOD(GetCommandString)(UINT, UINT, UINT*, LPSTR, UINT);
    STDMETHOD(InvokeCommand)(LPCMINVOKECOMMANDINFO);
    STDMETHOD(QueryContextMenu)(HMENU, UINT, UINT, UINT, UINT);

DECLARE_REGISTRY_RESOURCEID(IDR_BREEZESHL)
// need this???
//DECLARE_NOT_AGGREGATABLE(CBreezeShl)

DECLARE_PROTECT_FINAL_CONSTRUCT()

BEGIN_COM_MAP(CBreezeShl)
	COM_INTERFACE_ENTRY(IBreezeShl)
	COM_INTERFACE_ENTRY(IDispatch)
	COM_INTERFACE_ENTRY(IShellExtInit)
	COM_INTERFACE_ENTRY(IContextMenu)
END_COM_MAP()

// IBreezeShl
public:

protected:
//  TCHAR m_szFile [MAX_PATH];
    HBITMAP     m_hShellBmp;
    string_list m_lsFiles;
	struct_list m_lsConfig;
};

#endif //__BREEZESHL_H_
